99.9995%の可用性を実現するオンライン決済サービスであるStripeについて学べる「How Stripe achieves five and a half 9s of availability」に参加してきた #AWSreInvent
はじめに
こんにちは。AWS事業本部コンサルティング部に所属している和田響です。
AWS re:Invent 2024にて、99.9995%の可用性を実現するオンライン決済サービスであるStripeについて学べる、Breakout sessionに参加してきたので、そのセッションレポートを記載します。
セッション情報
- タイトル:FSI321 | How Stripe achieves five and a half 9s of availability
- スピーカー:
- Ballu Singh Principal Solutions Architect, AWS
- David Reaver Principal Software Engineer, Stripe
- Abhisek Chatterjee Head of Core Infrastructure, Stripe
- セッション概要: 以下引用
Stripe, which processes trillions of dollars in transactions annually across the world, must ensure its systems remain available, fault-tolerant, and resilient in the face of surges in traffic and unexpected failures. This session shares how Stripe architects and operates highly available systems at global scale on AWS. Explore the architectural patterns, monitoring systems, and incident response workflows that enable Stripe to achieve 99.9995% uptime—the gold standard set by emergency response hotlines. Gain practical insights into building resilient distributed systems and elevating the availability of your applications.
(機械翻訳)
世界中で年間数兆ドルの取引を処理する Stripe は、トラフィックの急増や予期しない障害に直面しても、システムの可用性、耐障害性、回復力を維持する必要があります。このセッションでは、Stripe が AWS でグローバル規模で高可用性のシステムを設計および運用する方法を紹介します。緊急対応ホットラインによって設定されたゴールド スタンダードである 99.9995% の稼働率を Stripe が達成できるようにするアーキテクチャ パターン、監視システム、インシデント対応ワークフローについて説明します。回復力のある分散システムを構築し、アプリケーションの可用性を高めるための実用的な洞察を得られます。
学んだこと
高可用性を支える背景と重要性
Stripeシステムが高可用性を求める背景として、ユーザが決済ができない場合のリスクについて言及していました。
例えば「飛行機の旅行券を購入しようとした場合に、取引の一瞬だけでもシステムに障害が起きたら旅行自体が中止になるかもしれない」といったユーザへの影響度を考え、特に決済サービスは可用性確保の優先順位が高いとこを示していました。
また、99.9995%の可用性とは1か月に13秒しか非稼働時間がないことを示しており、Stripeサービスの信頼性を感じました。
技術的なアプローチ
Stripeシステムはセルベースのアーキテクチャを採用しており、各セルで独立した処理が行えるよう設計をしているようです。そのため障害が発生した場合でも影響範囲を局所化できます。
その他、以下のような運用を実装していると紹介していました。
- 異常検出とグレー障害対応
- 異常検出システムを用い、パフォーマンスが異常なノードを特定する
- グレー障害(完全には機能していない状態)を早期に発見し、対応する
- カオスエンジニアリング
- 意図的に障害を注入し、システムの回復力をテストする
- 負荷テストと継続的デリバリー
- 大量トラフィックをシミュレーションしてボトルネックを特定する
- 自動化されたデプロイメントにより変更を効率的かつ安全に管理する
マインドセットの構築
システムの品質を向上させるためには、技術的なアプローチだけではなくマインドセットの構築も重要だと示していました。
特に以下の3つに注力していると話していました。
- 最悪の1日を毎日想定する
- システム全体の自動化
- オーナーシップを育む
最後に
Stripeは実際にサービスを利用したこともあり、開発者のお話を聞けて貴重な体験になりました。
「良いサービス」と聞くと、どんな構成図かを考えてしまいますが、どのようなマインドセットを持ってるかも重要であると再認識できました。